package com.ruoyi.system.service.impl;

import java.util.List;

import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.WebInfoLogMapper;
import com.ruoyi.system.domain.WebInfoLog;
import com.ruoyi.system.service.IWebInfoLogService;
import com.ruoyi.common.core.text.Convert;

/**
 * 网站连接记录Service业务层处理
 *
 * @author ruoyi
 * @date 2025-09-17
 */
@Service
public class WebInfoLogServiceImpl implements IWebInfoLogService
{
    @Autowired
    private WebInfoLogMapper webInfoLogMapper;

    /**
     * 查询网站连接记录
     *
     * @param logId 网站连接记录主键
     * @return 网站连接记录
     */
    @Override
    public WebInfoLog selectWebInfoLogByLogId(Long logId)
    {
        return webInfoLogMapper.selectWebInfoLogByLogId(logId);
    }

    @Override
    public int selectSuccessNumberByUserId(Long userId) {
        return webInfoLogMapper.selectSuccessNumberByUserId(userId);
    }

    /**
     * 查询网站连接记录列表
     *
     * @param webInfoLog 网站连接记录
     * @return 网站连接记录
     */
    @Override
    public List<WebInfoLog> selectWebInfoLogList(WebInfoLog webInfoLog)
    {
        return webInfoLogMapper.selectWebInfoLogList(webInfoLog);
    }

    /**
     * 新增网站连接记录
     *
     * @param webInfoLog 网站连接记录
     * @return 结果
     */
    @Override
    public int insertWebInfoLog(WebInfoLog webInfoLog)
    {
        webInfoLog.setConnectTime(DateUtils.getNowDate());
        webInfoLog.setCreateTime(DateUtils.getNowDate());
        // 查询前置条件 只能查当前用户的信息
        SysUser currentUser = ShiroUtils.getSysUser();
        webInfoLog.setUserId(currentUser.getUserId());
        // 先查询是否已存在记录
        WebInfoLog existing = webInfoLogMapper.selectLogByUserIdAndWebId(webInfoLog);
        if(existing != null) {
            System.out.println("已存在记录"+existing.getLogId());
            // 存在则更新
            webInfoLog.setLogId(existing.getLogId());
            return webInfoLogMapper.updateWebInfoLog(webInfoLog);
        } else {
            System.out.println("不存在记录");
            // 不存在则插入
            return webInfoLogMapper.insertWebInfoLog(webInfoLog);
        }
    }

    /**
     * 修改网站连接记录
     *
     * @param webInfoLog 网站连接记录
     * @return 结果
     */
    @Override
    public int updateWebInfoLog(WebInfoLog webInfoLog)
    {
        webInfoLog.setUpdateTime(DateUtils.getNowDate());
        return webInfoLogMapper.updateWebInfoLog(webInfoLog);
    }

    /**
     * 批量删除网站连接记录
     *
     * @param logIds 需要删除的网站连接记录主键
     * @return 结果
     */
    @Override
    public int deleteWebInfoLogByLogIds(String logIds)
    {
        return webInfoLogMapper.deleteWebInfoLogByLogIds(Convert.toStrArray(logIds));
    }

    /**
     * 删除网站连接记录信息
     *
     * @param logId 网站连接记录主键
     * @return 结果
     */
    @Override
    public int deleteWebInfoLogByLogId(Long logId)
    {
        return webInfoLogMapper.deleteWebInfoLogByLogId(logId);
    }
}
